package 牛客网在线编程题库;

/**
 * 题目描述
 * 输入一个链表，输出该链表中倒数第k个结点。
 * 如果该链表长度小于k，请返回空。
 * 示例1
 * 输入
 * {1,2,3,4,5},1
 * 返回值
 * {5}
 */

public class _链表中倒数第k个结点 {
    public static void main(String[] args) {

    }

    public static ListNode FindKthToTail (ListNode pHead, int k) {
        if (pHead == null) {
            return null;
        }
        // 初始化链表总长度
        int len = 1;
        // 定义遍历指针
        ListNode cur = pHead;
        // 先计算链表总长度
        while (cur.next != null) {
            // 长度自增
            len++;
            // 指针后移
            cur = cur.next;
        }
        // 如果该链表长度小于k，返回空
        if (len < k) {
            return null;
        }
        // 二次遍历
        for (int i = 0 ; i < len - k ; i++) {
            // 指针后移
            pHead = pHead.next;
        }
        return pHead;
    }
}
